#面向对象
#面向对象和面向过程的区别,自己理解的是:
#面向过程,程序由不同的过程(函数)组成,按一定顺序执行 优点,运行速度快 缺点,代码高耦合,相似的问题要写很多大部分相同的代码
#面向对象,程序由不同对象(模块)的函数交互组成,互相影响执行 优点,代码扩展性好,容易维护 缺点,编写复杂,性能低
#类和对象
#类的三要素 1类名 2属性,对象的特征描述(变量),说明什么样子 3方法,对象具有的功能(函数),用来说明干什么
#定义 class 类名:    遵循大驼峰命名法 所有单词首字母大写
class User:
    name = "Gwen"
    age = 17
    def attack(self):
        print(f"{self.name}使用{self.weapon}攻击")
#查看类的属性 类名.属性
print(User.name)
#添加属性 类名.属性 = 数据 修改一样
User.name = "格温"
User.weapon = "剪刀"
print(User.name)
print(User.weapon)
#创建对象 也叫实例化对象
#一个类可以创建多个对象 对象名 = 类名() 对象名接收的是创建的对象地址
user1 = User()
print(user1)
print(user1.name)
#实例方法和实例属性
#类中的方法参数里必须有self才能使用 self是对象自己的地址
user1.attack()
#实例属性和类属性的区别 类属性是公共的,实例属性只能对象访问
user1.sex = "女"
print(user1.sex)
# print(User.sex)

